A crossword puzzle generator and vocabulary builder